home *** CD-ROM | disk | FTP | other *** search
- /* longjmp.c --- BIBLE pp. 87-88 */
- #include <stdio.h>
- #include <setjmp.h>
- static jmp_buf mark_place;
- static void call_longjmp(void);
- main()
- {
- int rvalue;
- rvalue = setjmp(mark_place);
- if(rvalue != 0)
- {
- printf("Second return from \"setjmp\" induced by call "
- "to \"longjmp\"\n");
- printf("Return value = %d\n");
- exit(rvalue);
- }
- printf("Calling \"longjmp\" next...\n");
- call_longjmp();
- }
- /* ------------------------------- */
- static void call_longjmp(void)
- {
- longjmp(mark_place, 3);
- }